package commandPattern

/**
 * 命令模式:
 * 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可提供命令的撤销和恢复功能.
 *
 * 角色:
 * 命令(Command):声明一个给所有具体命令类的抽象接口,定义需要执行的命令.
 * 具体命令(ConcreteCommand):定义一个接收者和行为之间的弱耦合,实现命令方法,并调用接收者相应的操作.
 * 调用者(Invoker):负责调用命令对象执行请求.
 * 接收者(Receiver):负责具体实施和执行一个请求
 *
 * 优点:
 * 类间的解耦,调用者和接受者之间没有任何的依赖关系.
 *
 */
fun main() {
    Invoker(ConcreteCommand(Receiver())).action()
}